home *** CD-ROM | disk | FTP | other *** search
/ Aminet 4 / Aminet 4 - November 1994.iso / aminet / comm / ums / ums109_1.lha / Tools / FixAccess.LHA / FixAccess / FixAccess.mod < prev   
Text File  |  1993-08-26  |  3KB  |  86 lines

  1. MODULE FixAccess;
  2.  
  3. IMPORT ums, umss:UmsSupport, Patterns,
  4.        MHArgs, Err, NoGuruErr, Dos, Utility, sys:SYSTEM;
  5.  
  6.  
  7. TYPE
  8.   Lister* = RECORD (umss.Scanner)
  9.               pat:  Patterns.Pattern;
  10.             END;
  11.  
  12. VAR
  13.   session       : umss.Session;
  14.   cfg        : MHArgs.Config;
  15.   name,pwd,server,user: ARRAY 80 OF CHAR;
  16.   setflags,unsetflags: LONGSET;
  17.  
  18.   lister        : Lister;
  19.   viewFlag      : INTEGER;
  20.   dummy         : LONGINT;
  21.   text          : ums.STRPTR;
  22.  
  23. PROCEDURE (VAR me:Lister) DoField*( str: ums.STRPTR; flag: INTEGER);
  24.   VAR count: LONGINT;
  25.   BEGIN
  26.     IF (str^ # "") & me.pat.Match(str^) THEN
  27.       count := ums.UMSSelectTags( me.session.login,
  28.                         ums.tagSelReadLocal,    1,
  29.                         ums.tagSelMask,         LONGSET{flag},
  30.                         ums.tagSelMatch,        LONGSET{flag},
  31.                         ums.tagSelWriteUser,    sys.ADR(user),
  32.                         ums.tagSelSet,          setflags,
  33.                         ums.tagSelUnset,        unsetflags,
  34.                         Utility.done);
  35.       Dos.PrintF("%4ld - \"%s\"\n", count, str);
  36.     ELSE
  37.       Dos.PrintF("noac - \"%s\"\n", str);
  38.     END;
  39.   END DoField;
  40.  
  41.  
  42. BEGIN
  43.   cfg := MHArgs.OpenConfig( "SYSOPNAME/A,PASSWORD/A,SERVER/K,USER/A,UNREAD/S",
  44. "FixAccess - © 26.8.1993 by Martin Horneffer\n\n"
  45. "Remake a users public access-rights.", NIL);
  46.  
  47.   IF cfg=NIL  THEN  HALT(20)  END;
  48.  
  49.   IF cfg.GetString( "SYSOPNAME", name) &
  50.      cfg.GetString( "PASSWORD", pwd) &
  51.      cfg.GetString( "USER", user) THEN
  52.  
  53.     IF ~cfg.GetString( "SERVER", server) THEN  server := ""  END;
  54.     IF cfg.GetBoolean("UNREAD") THEN
  55.       setflags := LONGSET{ums.ReadAccess,ums.ViewAccess};
  56.       unsetflags := LONGSET{ums.Old};
  57.     ELSE
  58.       setflags := LONGSET{ums.ReadAccess,ums.ViewAccess,ums.Old};
  59.       unsetflags := LONGSET{};
  60.     END;
  61.  
  62.     session := umss.CreateSession( server, name, pwd);
  63.  
  64.     text := ums.ReadUMSConfigTags( session.login,
  65.                 ums.tagCfgUser, sys.ADR(user),
  66.                   ums.tagCfgName,    sys.ADR("READACCESS"),
  67.             Utility.done);
  68.     Err.Assert( text#NIL, "Cannot read READACCESS!");
  69.     lister.pat := Patterns.CreatePattern( text^, FALSE, NIL);
  70.     Err.Assert( lister.pat#NIL, "Cannot compile pattern!");
  71.  
  72.     viewFlag := session.AllocFlag(TRUE);
  73.  
  74.     dummy := ums.UMSSelectTags( session.login,
  75.                         ums.tagSelMask,         LONGSET{ums.ViewAccess},
  76.                         ums.tagSelMatch,        LONGSET{ums.ViewAccess},
  77.                         ums.tagSelWriteLocal,   1,
  78.                         ums.tagSelSet,          LONGSET{viewFlag},
  79.                         Utility.done);
  80.  
  81.     lister.Do( session, ums.group, LONGSET{viewFlag}, LONGSET{viewFlag});
  82.  
  83.     session.DeAllocFlag(viewFlag);
  84.   END;
  85. END FixAccess.
  86.